Software application development is carried out using different methodologies such as agile and waterfall. Each of these methodologies recommend phases or stages through which software code is tested and validated using a plurality of tools. Today, the agile methodology is gaining popularity. Continuous software development refers to a process wherein the software code is iteratively subjected to continuous integration, testing and deployment. In each of these aspects, a variety of tools or instruments are used for automation to ensure quality of software and increase efficiency of the process.
Build automation is a process wherein the build creation of software code is automated, that is, code is compiled, packaged and several functional and non-functional tests are performed before it is deployed in a target environment. Various tools are available to perform build automation and also perform functional and non-functional tests. At this stage, a product owner will monitor the quality of the software build version—this can be cumbersome especially when a wide variety of tools iteratively test various parameters of a software build at different points in time. Further, in an agile mode, build go through multiple iterations and scaled agile further compound project operations. Also, when there is an occurrence of a failure, it is important to trace or roll back to the cause of failure, which could be at any stage in the development lifecycle.
Output produced by various tools are in different formats and also contain different metrics or measures which could be difficult to decipher. It becomes important to assess the build quality from a granular level to a package level before making a decision to deploy. A quality manager or a product owner cannot be really expected to go through multiple versions of test reports for a build version to determine or check quality as per a benchmark because there are many tools in continuous operation and many reports that are generated in various formats at multiple locations. Further, if a test is still running, the software development team would need to wait till the test is complete to receive a report. Currently, there are limited means available, that would be able to read, for example, raw data generated by a tool (before a final report) and then analyze to present an instant view of a build quality to the end user. There is a need to unify or create a composite view, whereby reports generated for functional and non-functional tests and other test aspects can be accessed and critical parameters can be presented in an intelligible format to decision makers at any point in time in the software development process. This view will help identify patterns and track improvements for a version of software build.
U.S. patent application Ser. No. 15/046,139 draws attention to generating a set of scores each for functional and non-functional scores and then create an integrated score to assess software quality. However, the method described in this application does not consider the plurality of tools used to assess quality parameters and deriving insights from those reports. In yet another patent, U.S. Pat. No. 9,514,426 B2 titled System and Method for Providing Enterprise IT Life Cycle Tools Synchronization Platform, describes a workflow based method to synchronize tools used in the software development lifecycle irrespective of technology—however, this patent does not consider the aspect of unifying report data generated by various tool sets used in the software development process to monitor and assess quality of a build.
Hence, there is a need to read, analyze and create a composite view of the output generated by the multiple tools in the toolchain employed in the software development lifecycle, to the software development team and key stake holders that indicates aspects of quality that can be useful insight from the output generated by these tools at any point in time for decision making, creating improvements, resolving and tracing errors and increasing efficiency of the development cycle.